home *** CD-ROM | disk | FTP | other *** search
/ Loadstar Extras 3 / Ex3side1.d64 / mini source < prev    next >
Text File  |  2022-08-28  |  5KB  |  531 lines

  1. open =$ffc0
  2. readst =$ffb7
  3. setlfs =$ffba
  4. setnam =$ffbd
  5. setmsg =$ff90
  6. load =$ffd5
  7. getin =$ffe4
  8. input'buffer =512
  9. clrchn =$ffcc
  10. close =$ffc3   ;a
  11. chrin =$ffcf
  12. chkout =$ffc9  ;x
  13. chkin =$ffc6   ;x
  14. plot =$fff0
  15. chrout =$ffd2
  16. color'pointer =243
  17. screen'line'pointer =209
  18. print'number =$bdcd ;x,a
  19. clear'line =59903
  20. background =53281
  21. border =53280
  22. strout = $ab1e; .A low .Y high
  23. unlisten =$ffae
  24. clall =$ffe7
  25. color1 =53282
  26. color2 =53283
  27. color3 =53284
  28. white =5
  29. crsr'down =17
  30. rvs'on =18
  31. home =19
  32. del =20
  33. red =28
  34. crsr'right =29
  35. green =30
  36. blue =31
  37. black =144
  38. lowercase =14
  39. uppercase =142
  40. crsr'up =145
  41. rvs'off =146
  42. clr =147
  43. insert =148
  44. brown =149
  45. light'red =150
  46. dark'grey =151
  47. medium'grey =152
  48. light'green =153
  49. light'blue =154
  50. light'grey =155
  51. purple =156
  52. crsr'left =157
  53. yellow =158
  54. cyan =159
  55. top'left =176
  56. top'right =174
  57. bottom'left =173
  58. bottom'right =189
  59. box'parameters =820
  60. x1 =820
  61. x2 =821
  62. y1 =822
  63. y2 =823
  64. screen'code =824
  65. box'color =825
  66. flag =826
  67. temp =827
  68.  
  69. .org $c000
  70. ;obj "@2:toolkit c000"
  71. .mem
  72. jmp menu'entry
  73. jmp box'entry
  74. jmp screen'stash
  75. jmp screen'restore
  76. jmp linx
  77. jmp print'at
  78. jmp center
  79. jmp ucase
  80. jmp lcase
  81. jmp fcase
  82.  
  83. ;sys,addr y,x1,x2,number items,text,highlight,esc
  84.  
  85.  
  86.  
  87. ;***sys addr,x,to x,y,to y,s-code,color
  88.  
  89. box'entry lda #0
  90. sta temp
  91. - jsr get'number
  92. ldy temp
  93. sta box'parameters,y
  94. inc temp
  95. cpy #5
  96. bne -
  97.  
  98. fill'box jsr linx
  99. lda 214
  100. pha
  101. lda 211
  102. pha
  103. box'start ldx box'parameters+2
  104. ldy #0
  105. clc
  106. jsr $fff0
  107. jsr old'rom'patch
  108. dec box'parameters
  109. ;inc box'parameters+3
  110.  
  111. - ldy box'parameters+1
  112. - lda box'parameters+4
  113. cmp #255
  114. beq +
  115. sta (209),y
  116. + lda box'parameters+5
  117. sta (243),y
  118. dey
  119. cpy box'parameters
  120. bne -
  121. lda 214
  122. cmp box'parameters+3
  123. beq +
  124.  
  125. inc 214
  126. jsr 58732
  127. jsr old'rom'patch
  128. jmp --
  129. + lda #home
  130. jsr $ffd2
  131. pla
  132. sta 211
  133. pla
  134. sta 214
  135. jmp 58732
  136.  
  137. linx ldy #24
  138. - lda 217,y
  139. ora #128
  140. sta 217,y
  141. dey
  142. bpl -
  143. rts
  144.  
  145. screen'stash sec
  146. jsr plot
  147. stx menuy
  148. sty menux1
  149.  
  150. jsr get'number
  151. sta 252
  152. cmp >1024
  153. bcs +
  154. rts
  155.  
  156. + clc
  157. adc #4
  158. sta 254
  159. lda #0
  160. sta 253
  161. sta 251
  162.  
  163. lda #home
  164. jsr chrout
  165. jsr old'rom'patch
  166. sei
  167. lda #0
  168. sta 1
  169.  
  170. ldx #3
  171. ldy #0
  172. - lda (209),y
  173. sta (251),y
  174. dec 1
  175. lda (243),y
  176. inc 1
  177. sta (253),y
  178. iny
  179. bne -
  180. inc 210
  181. inc 252
  182. inc 244
  183. inc 254
  184. dex
  185. bpl -
  186. dec 254
  187. ldy #233
  188. dec 1
  189. lda 53280
  190. inc 1
  191. sta (253),y
  192. iny
  193. dec 1
  194. lda 53281
  195. inc 1
  196. sta (253),y
  197. iny
  198. lda menuy
  199. sta (253),y
  200. iny
  201. lda menux1
  202. sta (253),y
  203. lda #$77
  204. sta 1
  205. cli
  206. ldy menux1
  207. ldx menuy
  208. clc
  209. jmp plot
  210.  
  211. screen'restore jsr get'number
  212. sta 252
  213. clc
  214. adc #4
  215. sta 254
  216. lda #0
  217. sta 253
  218. sta 251
  219.  
  220. lda #home
  221. jsr chrout
  222. jsr old'rom'patch
  223. sei
  224. lda #0
  225. sta 1
  226.  
  227. ldx #3
  228. ldy #0
  229.  
  230. - lda (251),y
  231. sta (209),y
  232. lda (253),y
  233. dec 1
  234. sta (243),y
  235. inc 1
  236. iny
  237. bne -
  238. inc 210
  239. inc 252
  240. inc 244
  241. inc 254
  242. dex
  243. bpl -
  244. dec 254
  245. ldy #233
  246. lda (253),y
  247. dec 1
  248. sta 53280
  249. iny
  250. inc 1
  251. lda (253),y
  252. dec 1
  253. sta 53281
  254. inc 1
  255. iny
  256. lda (253),y
  257. sta 214
  258. iny
  259. lda (253),y
  260. sta 211
  261. lda #$77
  262. sta 1
  263. cli
  264. jmp 58732
  265.  
  266. menu'entry lda #0
  267. sta temp
  268. sta flag
  269. - jsr get'number
  270. ldy temp
  271. sta menuy,y
  272. inc temp
  273. cpy #6
  274. bne -
  275.  
  276. menu jsr linx
  277. ldx menuy
  278. ldy #0
  279. sty menu'current
  280. clc
  281. jsr plot
  282. jsr old'rom'patch
  283. lda menu'highlight
  284. sta mcolor
  285. jsr paint'line
  286.  
  287. menu'wait jsr getin
  288. beq menu'wait
  289.  
  290. ldx menu'current
  291. stx temp
  292.  
  293. cmp #crsr'down
  294. beq menu'down
  295.  
  296. cmp #crsr'up
  297. beq menu'up
  298.  
  299. cmp #13
  300. beq menu'select
  301.  
  302. cmp exit'key
  303. bne menu'wait'loop
  304. dec flag
  305. bmi menu'select
  306.  
  307. menu'wait'loop jmp menu'wait
  308.  
  309. menu'down inc menu'current
  310. lda menu'current
  311. cmp menu'items
  312. bne highlight
  313. lda #0
  314. sta menu'current
  315. jmp highlight
  316.  
  317. menu'up dec menu'current
  318. lda menu'current
  319. cmp #255
  320. beq +
  321. jmp highlight
  322.  
  323. + ldy menu'items
  324. dey
  325. sty menu'current
  326. jmp highlight
  327.  
  328. menu'select lda menu'current
  329. clc
  330. adc menuy
  331. tax
  332. ldy #0
  333. jsr plot
  334. jsr old'rom'patch
  335. lda menu'text
  336. sta mcolor
  337. jsr paint'line
  338.  
  339. bit flag
  340. bmi +
  341. lda menu'current
  342. clc
  343. adc #49
  344. sta 631
  345. lda #1
  346. sta 198
  347. + rts
  348.  
  349. highlight lda menuy
  350. clc
  351. adc menu'current
  352. tax
  353. ldy #0
  354. clc
  355. jsr plot
  356. jsr old'rom'patch
  357. lda menu'highlight
  358. sta mcolor
  359. jsr paint'line
  360.  
  361. lda menuy
  362. clc
  363. adc temp
  364. tax
  365. ldy #0
  366. clc
  367. jsr plot
  368. jsr old'rom'patch
  369. lda menu'text
  370. sta mcolor
  371. jsr paint'line
  372.  
  373. jmp menu'wait
  374.  
  375. paint'line ldy menux1
  376. - lda mcolor
  377. sta (243),y
  378. bmi +
  379. lda (209),y
  380. eor #128
  381. sta (209),y
  382. + iny
  383. cpy menux2
  384. beq -
  385. bcc -
  386. rts
  387.  
  388. ;**** get number from BASIC ****
  389.  
  390. get'number jsr $aefd
  391. jsr $ad8a
  392. jsr $b7f7
  393. lda $14  ; got low byte
  394. rts
  395.  
  396.  
  397. ;***** get string from BASIC ****
  398.  
  399. get'string jsr $aefd
  400. jsr $ad9e
  401. jsr $b6a3
  402.  
  403. ldx $22
  404. ldy $23
  405. rts
  406.  
  407. print'at jsr linx
  408. jsr get'number
  409. sta 211
  410. jsr get'number
  411. sta 214
  412. jsr 58732
  413. jsr get'string
  414. sta temp
  415.  
  416. print'string ldy #0
  417. - lda ($22),y
  418. jsr chrout
  419. iny
  420. cpy temp
  421. bne -
  422. rts
  423.  
  424. ucase jsr get'string
  425. sta temp
  426. ldy #0
  427. - lda ($22),y
  428. cmp #65
  429. bcc +
  430. ora #128
  431. sta ($22),y
  432. + iny
  433. cpy temp
  434. bne -
  435. rts
  436.  
  437. lcase jsr get'string
  438. sta temp
  439. ldy #0
  440. - lda ($22),y
  441. and #127
  442. sta ($22),y
  443. iny
  444. cpy temp
  445. bne -
  446. rts
  447.  
  448. fcase lda #255
  449. sta flag
  450. jsr get'string
  451. sta temp
  452. ldy #0
  453. lda ($22),y
  454. cmp #65
  455. bcc +
  456. ora #128
  457. sta ($22),y
  458. + iny
  459. lda #0
  460. sta flag
  461. ldy #1
  462. - lda ($22),y
  463. and #127
  464. sta ($22),y
  465.  
  466. cmp "."
  467. bne +
  468. dec flag
  469. + cmp "!"
  470. bne +
  471. dec flag
  472. + cmp "?"
  473. bne +
  474. dec flag
  475.  
  476. + bit flag
  477. bmi +
  478. iny
  479. cpy temp
  480. bne -
  481. rts
  482.  
  483. + cmp #65
  484. bcc +
  485. ora #128
  486. sta ($22),y
  487. inc flag
  488. + iny
  489. cpy temp
  490. bne -
  491. rts
  492.  
  493. center jsr get'number
  494. tax
  495. ldy #0
  496. clc
  497. jsr plot
  498.  
  499. jsr get'string
  500. sta temp
  501.  
  502. lsr
  503. sta flag
  504. lda #20
  505. sec
  506. sbc flag
  507. sta 211
  508. jsr 58732
  509. jmp print'string
  510.  
  511. old'rom'patch lda 210
  512. sec
  513. sbc 648
  514. clc
  515. adc #$d8
  516. sta 244
  517. lda 209
  518. sta 243
  519. rts
  520.  
  521. menuy .byt 0
  522. menux1 .byt 0
  523. menux2 .byt 0
  524. menu'items .byt 0
  525. menu'text .byt 0
  526. menu'highlight .byt 0
  527. exit'key .byt 0
  528.  
  529. menu'current .byt 0
  530. mcolor .byt 0
  531.